package com.diagrammer.vo.factory
{
	import com.diagrammer.vo.LineVO;
	import com.diagrammer.vo.NodeVO;

	/**
	 * VO对象创建工厂接口
	 * 
	 * @author Dwei <b>2012-02-10</b>
	 * 
	 */	
	public interface IVOFactory
	{
		/**
		 * 获取一个节点VO对象
		 * 
		 * @param value 节点VO数据
		 * @return 
		 * 
		 */		
		function getNodeVO(value:XML):NodeVO;
		
		/**
		 * 获取一个节点VO的数据
		 * @param value 节点VO对象
		 * @param nodeIdField 节点标识属性名称，忽略null和""，默认-<b>at</b>id(<b>at</b>为符号：shift+2)
		 * @return 
		 * 
		 */
		function getNodeDataProvider(value:NodeVO, nodeIdField:String):XML;
		
		/**
		 * 获取一个线条VO对象
		 * @param value 线条VO数据
		 * @return 
		 * 
		 */		
		function getLineVO(value:XML):LineVO;
		
		/**
		 * 获取一个线条VO数据
		 * @param value 线条VO对象
		 * @param lineIdField 线条标识属性名称，忽略null和""，默认-<b>at</b>id(<b>at</b>为符号：shift+2)
		 * @param fromIdField 线条起始节点标识属性名称，忽略null和""，默认-<b>at</b>fromId(<b>at</b>为符号：shift+2)
		 * @param toIdField 线条结束节点标识属性名称，忽略null和""，默认-<b>at</b>toId(<b>at</b>为符号：shift+2)
		 * @return 
		 * 
		 */		
		function getLineDataProvider(value:LineVO, lineIdField:String, fromIdField:String, toIdField:String):XML;
	}
}